#ifndef SNAKE_H
#define SNAKE_H

#include <curses.h>
#include <cstdlib>
#include <unistd.h>
#include <locale.h>
#include <ctime>

// 全局变量
extern int maxX, maxY;
struct SnakeSegment
{
  int x, y;
};
extern SnakeSegment snake[100]; // 允许蛇增长
extern int snakeLength;
extern int direction;
extern int foodX, foodY;
extern int currScore; // 改为 currScore
extern const int INITIAL_DELAY;
extern int delay;
extern int HighScore;       // 改为 HighScore
extern bool isMoving;       // 控制蛇是否移动
extern bool r_pressed;      // 长按 r 状态
extern bool s_pressed;      // 长按 s 状态
extern bool s_key_down;     // 新增：按住 s 的状态
extern bool ctrl_b_pressed; // 新增：Ctrl+B 状态
extern bool ctrl_e_pressed; // 新增：Ctrl+E 状态

// 函数声明
void initNcurses();
void printsnake();
void welcometogame();
void explation(bool startGame);
void showRank();
void showGameOver(int initialHighScore, bool newRecord, bool &gameRunning); // 修改
void restartGame();
void File_out();
void scoreandtips();
void createMap();
void initsnake();
void createfood();
int biteself();
int cantcrosswall();
void speedup();
void speeddown();
void resetSpeed(); // 新增：恢复初始速度
void snakemove();
void keyboardControl(int ch);
void clearSnake();

#endif